package fint.the.intersection.of.two.arrays;

import java.util.ArrayList;
import java.util.HashSet;

/**
 * @Time 2019/12/14
 * @author 王光浩
 * @Need 获取两个数组中数值相同的数据（整数），结果不可出现重复数据
 * @Method 使用两个hashset集合，将第一数组的元素加入到第一个hashset集合中，然后将第二个数组元素加入到hashset中，但是如果出现加入错误
 *         i则将该数据加入到第二个hashset中。最后第二个hashset中的数据就是最后结果
 * @Anaylse 时间复杂度为O（n），空间复杂度为O（n）
 */
public class MyMethodOne {
    public int[] intersection(int[] nums1, int[] nums2) {
        HashSet<Integer> set=new HashSet<Integer>();   
        HashSet<Integer> result=new HashSet<Integer>();    //保存相同的数据                           //计数器
        //将第一个数组中元素加入set中
        for(int i:nums1) {
        	set.add(i);
        }
        //将第二数组中与hashset中相同的数据加入到result中
        for(int i:nums2) {
        	if(!set.contains(i)) {
        		result.add(i);
        	}
        } 
        //将hashset集合中的数据存放在数组中
        int[] a=new int[result.size()];
        int total=0;
        for(int i:result) {
        	a[total++]=i;
        }
        return a;
    }
}
